package com.example.test.advice.第五章_数组和集合.建议77_使用shuffle打乱列表;

import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class Client {

    //传统方式
    @Test
    public  void upSet(){
        int tagCloudNum = 10;
        List<String> tagClouds = new ArrayList<>(tagCloudNum);
        //初始化标签云，一般是从数据库读入，省略
        Random random = new Random();
        for(int i = 0;i< tagCloudNum;i++){
            //取得随机位置
            int randomPosition = random.nextInt(tagCloudNum);
            //当前元素与随即元素交换
            String temp = tagClouds.get(i);
            tagClouds.set(i,tagClouds.get(randomPosition));
            tagClouds.set(randomPosition,temp);
        }
    }

    @Test
    //改进方式1
    public  void upSet2 (){
        int tagCloudNum = 10;
        List<String> tagClouds = new ArrayList<>(tagCloudNum);
        //初始化标签云，一般是从数据库读入，省略
        Random random = new Random();
        for(int i = 0;i< tagCloudNum;i++){
            //取得随机位置
            int randomPosition = random.nextInt(tagCloudNum);
            //当前元素与随即元素交换
            Collections.swap(tagClouds,i,randomPosition);
        }
    }

    //改进方式2--更优雅
    @Test
    public  void upSet3 (){
        int tagCloudNum = 10;
        List<String> tagClouds = new ArrayList<>(tagCloudNum);
        for(int i =0;i<tagCloudNum;i++){
            tagClouds.add(""+i);
        }
        System.out.println(tagClouds);
        Collections.shuffle(tagClouds);
        System.out.println(tagClouds);

    }
}
